package com.cavasmonitor;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import com.cavasmonitor.db.CavasDao;
import com.cavasmonitor.to.EquipoTo;
import com.cavasmonitor.to.TemperaturaTo;
import com.cavasmonitor.to.UsuarioTo;
import com.cavasmonitor.util.Session;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Spinner;

public class ReportesActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.reportes);

		ImageButton img = (ImageButton) findViewById(R.id.btnHome);

		img.setOnClickListener(new View.OnClickListener() {
			public void onClick(View view) {
				Intent i = new Intent(ReportesActivity.this,
						OpcionesActivity.class);
				startActivityForResult(i, 1);
			}
		});

		img = (ImageButton) findViewById(R.id.btnExit);

		img.setOnClickListener(new View.OnClickListener() {
			public void onClick(View view) {

				new AlertDialog.Builder(ReportesActivity.this)
						.setTitle(R.string.msg_salir)
						.setMessage(R.string.msg_logout)
						.setPositiveButton(R.string.msg_aceptar,
								new DialogInterface.OnClickListener() {
									@Override
									public void onClick(DialogInterface dialog,
											int which) {
										Session.usuario = null;
										Intent i = new Intent(
												ReportesActivity.this,
												MainActivity.class);
										startActivityForResult(i, 1);
									}
								})
						.setNegativeButton(R.string.msg_cancelar, null).show();

			}
		});
		
		CavasDao dao = new CavasDao(ReportesActivity.this);
		dao.open();

		List<EquipoTo> equipos = dao.getEquipos();
		List<String> list = new ArrayList<String>();

		list.add("-");
		if (equipos != null && !equipos.isEmpty())
			for (EquipoTo e : equipos) {
				list.add(e.getNombre() + " P:" + e.getPunto());
			}
		Spinner s = (Spinner) findViewById(R.id.spiEquipos);
		ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
				this, android.R.layout.simple_spinner_item, list);
		spinnerArrayAdapter
				.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		s.setAdapter(spinnerArrayAdapter);
		
		
		list = new ArrayList<String>();
		list.add("-");
		list.add("Diario");
		list.add("Semanal");
		list.add("Mensual");
		
		s = (Spinner) findViewById(R.id.spiPeriodos);
		spinnerArrayAdapter = new ArrayAdapter<String>(
				this, android.R.layout.simple_spinner_item, list);
		spinnerArrayAdapter
				.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		s.setAdapter(spinnerArrayAdapter);
		
		Button btn = (Button) findViewById(R.id.btnGenerar);

		btn.setOnClickListener(new View.OnClickListener() {
			public void onClick(View view) {

				Spinner spn = (Spinner) findViewById(R.id.spiPeriodos);
				Long periodo = spn.getSelectedItemId();

				spn = (Spinner) findViewById(R.id.spiEquipos);
				Long iequipo = spn.getSelectedItemId();
				
				if (periodo == 0) {
					new AlertDialog.Builder(ReportesActivity.this)
							.setTitle(R.string.msg_atencion)
							.setMessage(R.string.msg_reporte_pe_req)
							.setNeutralButton(R.string.msg_aceptar, null)
							.show();
				} else if (iequipo == 0) {
					new AlertDialog.Builder(ReportesActivity.this)
							.setTitle(R.string.msg_atencion)
							.setMessage(R.string.msg_reporte_eq_req)
							.setNeutralButton(R.string.msg_aceptar, null)
							.show();
				}else{
				
					CavasDao dao = new CavasDao(ReportesActivity.this);
					dao.open();
					
					spn = (Spinner) findViewById(R.id.spiEquipos);
					Long punto = Long.valueOf(spn
							.getSelectedItem()
							.toString()
							.trim()
							.substring(
									spn.getSelectedItem().toString().trim()
											.lastIndexOf("P:") + 2));
					EquipoTo equipo = dao.getEquipoPorPunto(punto);
					
					int diferenciaEnDias;
					if (periodo == 1){
						diferenciaEnDias = 1;
					}else if (periodo == 2){
						diferenciaEnDias = 7;						
					}else{
						diferenciaEnDias = 30;
					}					
					
					
					long tiempoActual = Calendar.getInstance().getTimeInMillis();
					long unDia = diferenciaEnDias * 24 * 60 * 60 * 1000;
					
					Long min = tiempoActual - unDia;
					Long max = Calendar.getInstance().getTimeInMillis();

					List<TemperaturaTo> temperaturas = dao.getTemperaturasEquipo(equipo.getId(), min, max);		
					
					ReporteGeneradoActivity.temperaturas = temperaturas;
					
					Intent i = new Intent(ReportesActivity.this,
							ReporteGeneradoActivity.class);
					startActivityForResult(i, 1);
					
					dao.close();
								
				}
			}
		});
		
		dao.close();
	}
	
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		Intent i;
		switch (item.getOrder()) {
		case Session.M_USUARIOS:
			i = new Intent(
					ReportesActivity.this,
					UsuariosActivity.class);
			startActivityForResult(i, 1);
			return true;
		case Session.M_CFG:
			i = new Intent(
					ReportesActivity.this,
					ConfiguracionActivity.class);
			startActivityForResult(i, 1);
			return true;
		}
		return super.onOptionsItemSelected(item);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		if (Session.usuario.getRol() == UsuarioTo.Rol.ADMINISTRADOR) {
			getMenuInflater().inflate(R.menu.main, menu);
		} 
		return true;
	}

}
